草庐IT

leetcode 413. Arithmetic Slices 等差数列划分

全部标签

【算法】双指针划分思想妙解移动零

Problem:283.移动零文章目录思路算法图解分析复杂度Code思路首先我们来讲一下本题的思路本题主要可以归到【数组划分/数组分块】这一类的题型。我们将一个数组中的所有元素划分为两段区间,左侧是非零元素,右侧是零元素那解决这一类的题我们首先想到的就是【双指针算法】,学习过C语言的同学应该就可以知道指针是比较繁琐和复杂,如果有兴趣学习的同学可以看看我的这篇文章链接不过在这里呢我们不需要去使用int*这种指针,而是直接使用数组下标来充当指针即可好,那我们就来看看这个双指针到底是怎样的,要如何去使用两个指针的作用【cur】:从左往右扫描数组,遍历数组【dest】:已处理的区间内,非零元素的最后一

LeetCode每日一题——1691. 堆叠长方体的最大高度

LeetCode每日一题系列题目:828.统计子串中的唯一字符难度:困难文章目录LeetCode每日一题系列题目示例思路题解题目给你n个长方体cuboids,其中第i个长方体的长宽高表示为cuboids[i]=[widthi,lengthi,heighti](下标从0开始)。请你从cuboids选出一个子集,并将它们堆叠起来。如果widthi返回堆叠长方体cuboids可以得到的最大高度。示例思路排序加动态规划:首先我们将所有长方体的长宽高按照从小到大的顺序排放,形如[3,4,5]的格式,最大的元素为高度,其他俩任意分为长和宽。在将整个长方体数组按照从小到大的顺序排列,这里默认是按照数组的第一

算法leetcode|71. 简化路径(rust重拳出击)

文章目录71.简化路径:样例1:样例2:样例3:样例4:提示:分析:题解:rust:go:c++:python:java:71.简化路径:给你一个字符串path,表示指向某一文件或目录的Unix风格绝对路径(以'/'开头),请你将其转化为更加简洁的规范路径。在Unix风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点(..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠'/'。对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。请注意,返回的规范路径必须遵循下述格式:始终以斜杠'/'开头

python - 划分数组时 numpy 中的意外行为

因此,在numpy1.8.2(使用python2.7.6)中,数组划分似乎存在问题。当对足够大的数组(至少8192个元素,多于一维,数据类型无关)与自身的一部分执行就地除法时,不同符号的行为不一致。importnumpyasnparr=np.random.rand(2,5000)arr_copy=arr.copy()arr_copy=arr_copy/arr_copy[0]arr/=arr[0]printnp.sum(arr!=arr_copy),arr.size-np.sum(np.isclose(arr,arr_copy))输出应该是0,因为两个除法应该是一致的,但它是1808。这

3.你所不知道的go语言控制语句——Leetcode习题69

目录本篇前瞻Leetcode习题9题目描述代码编写控制结构顺序结构(Sequence)声明和赋值多返回值赋值运算符算术运算符位运算符逻辑运算分支结构if语句switch语句逻辑表达式fallthrough类型推断循环语句continuebreakgotoLeetcode习题69题目描述题目分析代码编写本篇小结下篇预告本篇前瞻好的,现在你已经来到一个新的小结,在这里你将学习到go语言的重要内容,习得go25个关键字中的12个:var,const,if,else,switch,case,default,fallthrough,for,break,goto,continue,即在顺序结构学习var,

LeetCode 160.相交链表

文章目录💡题目分析💡解题思路🚩步骤一:找尾节点🚩步骤二:判断尾节点是否相等🚩步骤三:找交点🍄思路1🍄思路2🔔接口源码题目链接👉LeetCode160.相交链表👈💡题目分析给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。💡解题思路🚩步骤一:找尾节点 structListNode*tailA=headA;structListNode*tailB=headB;intlenA=1,lenB=1;while(tailA){tailA=tailA->next;lenA++;}while(tailB){tailB=tailB->

LeetCode 21.合并两个有序链表

文章目录💡题目分析💡解题思路🚩思路1:归并排序思想(不使用带哨兵卫的头节点)🔔接口源码:💡解题思路🚩思路2:归并排序思想(使用带哨兵卫的头节点)🔔接口源码:题目链接👉LeetCode21.合并两个有序链表👈💡题目分析将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。💡解题思路🚩思路1:归并排序思想(不使用带哨兵卫的头节点)取小的进行尾插👇图解👇🔔接口源码:structListNode*mergeTwoLists(structListNode*list1,structListNode*list2){ //考虑list1和list2其中一个为空的情况if(

leetcode做题笔记74搜索二维矩阵

给你一个满足下述两条属性的 mxn 整数矩阵:每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。思路一:直接遍历整个矩阵查找boolsearchMatrix(int**matrix,intmatrixSize,int*matrixColSize,inttarget){for(inti=0;i分析:本题可直接遍历整个矩阵进行查找总结:本题考察矩阵相关操作,使用遍历即可解决

LeetCode 1572. 矩阵对角线元素的和

【LetMeFly】1572.矩阵对角线元素的和力扣题目链接:https://leetcode.cn/problems/matrix-diagonal-sum/给你一个正方形矩阵mat,请你返回矩阵对角线元素的和。请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1:输入:mat=[[1,2,3], [4,5,6], [7,8,9]]输出:25解释:对角线的和为:1+5+9+3+7=25请注意,元素mat[1][1]=5只会被计算一次。示例 2:输入:mat=[[1,1,1,1], [1,1,1,1], [1,1,1,1], [1,1,1,1]]输出:8示例3:输入:

leetcode——26. 删除有序数组中的重复项

文章目录🐨1.题目🏹2.思路🪃3.代码实现🐨1.题目给你一个升序排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有k个元素,那nums的前k个元素应该保存最终结果。将最终结果插入nums的前k个位置后返回k。不要使用额外的空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。示例1:输入:nums=[1,1,2]输出:2,nums=[1,2,_]解释:函数应该返回新的长度2,并且原数组nums的前两